package xim

import (
	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 获取我的申请关联
//
//	uid	用户ID
func GetJoins(uid uint) ([]ChatsJoin, error) {
	chat := []ChatsJoin{}
	if _default.DB == nil {
		return nil, xerror.New("数据库未连接")
	}
	err := _default.DB.Table(_default.ChatsJoinTable).
		Where("join_id", uid).
		Where("type_id", 1).
		Order("`created_at` DESC").
		Find(&chat).
		Error
	if err != nil {
		return nil, xlog.AE("我的好友申请获取失败", err)
	}
	if len(chat) == 0 {
		chat = []ChatsJoin{}
	}
	// 获取进群邀请【群成员/管理员等邀请我进群，此操作不需要管理员审核，但是需要用户审核】
	chat_temp := []ChatsJoin{}
	err = _default.DB.Table(_default.ChatsJoinTable).
		Where("join_id", uid).
		Where("type_id", 3).
		Order("`created_at` DESC").
		Find(&chat_temp).
		Error
	if err != nil {
		return nil, xlog.AE("我的进群邀请获取失败", err)
	}
	chat = append(chat, chat_temp...)
	// 获取群申请
	// 1. 获取我管理的群信息
	chat_ids := []uint{}
	err = _default.DB.Table(_default.ChatUserTable).
		Where("is_deleted", 0).
		Where("user_id", uid).
		Where("is_management", 1).
		Select("chat_id").
		Find(&chat_ids).
		Error
	if err != nil {
		return nil, xlog.AE("我管理的群获取失败", err)
	}
	// 2.获取进群申请
	chat_temp = []ChatsJoin{}
	err = _default.DB.Table(_default.ChatsJoinTable).
		Where("join_id IN ?", chat_ids).
		Where("type_id", 2).
		Order("`created_at` DESC").
		Find(&chat_temp).
		Error
	if err != nil {
		return nil, xlog.AE("我的进群邀请获取失败", err)
	}
	chat = append(chat, chat_temp...)
	return chat, nil
}
